#pragma once

#include <Windows.h>
#include <string>

DWORD WINAPI DriverMessageRoutine(LPVOID lpContext);
void InitMessageParser(void);
BOOL LoadDriver(void);
void UnloadDriver(void);
ULONG64 GetKeSystemTime(void);
BOOL GetProcessImagePath(DWORD dwProcessId, LPWSTR szImagePath, DWORD dwImagePathLength);
BOOL GetImagePathByAddress(DWORD dwProcessId, ULONG64 ImageBase, LPWSTR szImagePath, DWORD dwImagePathLength);
DWORD GetParentProcessId(DWORD dwProcessId);
BOOL GetProcessCreateTime(DWORD dwProcessId, FILETIME *CreateTime);
BOOL GetProcessBaseInfo(DWORD dwProcessId, DWORD *ParentProcessId, FILETIME *CreateTime, BOOLEAN *bIs64Bit, DWORD *SessionId, std::wstring &ImagePath);
DWORD AddIgnoreProcess(DWORD dwProcessId);
void SetEnableCapture(BOOL bEnable);